<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>FunctionExample02</title>
    <script>

        function howManyArgs() {
            console.log(arguments.length);
        }
        howManyArgs();
        howManyArgs(2 , "3")
        howManyArgs(4);

        //可以通过arguments对象取出对应的参数
        function howManyArgs2() {
            if (arguments.length == 1) {
                console.log( " arguments[0] ：" + arguments[0]);
            }else if (arguments.length == 2) {
                console.log( " arguments[0] ：" + arguments[0] + "; arguments[1]: "+ arguments[1]);
            }
        }
        howManyArgs2("1");
        howManyArgs2("2", "hahah");

        //arguments可以和命名参数一起使用
        function howManyArgs3(num1, num2) {
            console.log(arguments[0] );
            console.log(arguments[1] );
            if (arguments.length == 2) {
                return arguments[0] + num2;
            }
        }
        let result = howManyArgs3(2 , 3);
        console.log("result: " + result);

        /**
         * arguments中的值永远与对应命名参数的值相同
         * 但是他们属于独立的内存空间
         */
        function doAdd(num1, num2) {
            arguments[0] = 10;
            return arguments[0] + num1;//结果是 20，虽然修改的arguments[0]， 但是num1的值也会进行同步
        }

        let result2 = doAdd(1, 2);
        console.log("result2: " + result2)



    </script>
</head>
<body>
FunctionExample02
</body>
</html>